package com.club.football.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.club.football.dto.ChangePwdDto;
import com.club.football.dto.LoginDto;
import com.club.football.dto.PageDto;
import com.club.football.dto.UserSaveDto;
import com.club.football.entity.User;
import com.club.football.req.UserPageReq;
import com.club.football.utils.R;
import com.club.football.vo.UserVo;

/**
 * 用户服务
 *
 * @author 1
 * @date 2024/01/09
 */
public interface UserService extends IService<User> {
    /**
     * 按ID查询
     *
     * @param userId 用户ID
     * @return {@link R}<{@link UserVo}>
     */
    R<UserVo> queryById(Long userId);

    /**
     * 登录
     *
     * @param loginDto 登录数据到
     * @return {@link R}<{@link String}>
     */
    R<String> login(LoginDto loginDto);

    /**
     * 用户页面
     *
     * @param pageDto 页数到页
     * @param pageReq 寻呼请求
     * @return {@link R}<{@link Page}<{@link UserVo}>>
     */
    R<Page<UserVo>> userPage(PageDto<User> pageDto, UserPageReq pageReq);

    /**
     * 保存用户
     *
     * @param userSaveDto 用户将数据保存到
     * @return {@link R}<{@link String}>
     */
    R<String> saveUser(UserSaveDto userSaveDto);

    /**
     * 更改PWD
     *
     * @param dto DTO
     * @return {@link R}<{@link String}>
     */
    R<String> changePwd(ChangePwdDto dto);

    /**
     * 换手机
     *
     * @param dto DTO
     * @return {@link R}<{@link String}>
     */
    R<String> changePhone(UserSaveDto dto);
}
